package com.nts.pmchelperdemo3.service;

import com.nts.pmchelperdemo3.dto.ToolDTO;
import com.nts.pmchelperdemo3.entity.Tool;
import java.util.List;

/**
 * 刀具服务接口
 */
public interface ToolService {

    /**
     * 添加普通刀具（定制刀无需添加）
     * @param toolDTO 刀具DTO
     * @return 添加后的刀具DTO
     */
    ToolDTO createTool(ToolDTO toolDTO);

    /**
     * 分页查询刀具（支持按名称模糊查询）
     * @param toolName 刀具名称（可选）
     * @param page 页码
     * @param size 页大小
     * @return 刀具DTO列表
     */
    List<ToolDTO> queryTools(String toolName, Integer page, Integer size);

    /**
     * 根据ID查询刀具详情
     * @param id 刀具ID
     * @return 刀具DTO
     */
    ToolDTO getToolById(Long id);

    /**
     * 根据名称查询刀具（用于订单创建时判断是否为普通刀）
     * @param toolName 刀具名称
     * @return 刀具实体（不存在则返回null）
     */
    Tool getToolByName(String toolName);

    /**
     * 更新刀具信息（仅普通刀）
     * @param id 刀具ID
     * @param toolDTO 新的刀具信息
     * @return 更新后的刀具DTO
     */
    ToolDTO updateTool(Long id, ToolDTO toolDTO);

    /**
     * 删除刀具（需无关联订单）
     * @param id 刀具ID
     */
    void deleteTool(Long id);


    /**
     * 查询刀具总数
     * @return 刀具总数
     */
    int countAllTools();
}